/**
 * 支付宝支付配置类
 * 用于读取和配置支付宝支付相关的参数
 * 从alipay.properties配置文件中读取配置信息
 */
package cc.mrbird.febs.common.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @Configuration: 标识这是一个配置类
 * @ConfigurationProperties: 自动绑定配置文件中的属性
 * @PropertySource: 指定配置文件的位置
 * @Data: 自动生成getter、setter、toString等方法
 * @Component: 标识这是一个Spring组件
 */
@Configuration
@ConfigurationProperties
@PropertySource("classpath:config/alipay.properties")
@Data
@Component
public class AlipayConfig {

    /**
     * 应用ID
     * 在支付宝开放平台创建应用后获取的APPID
     * 收款账号既是您的APPID对应的支付宝账号
     */
    private String appId;

    /**
     * 商户私钥
     * 使用PKCS8格式的RSA2私钥
     * 用于生成请求签名
     */
    private String privateKey;

    /**
     * 支付宝公钥
     * 用于验证支付宝返回的数据签名
     * 确保数据的安全性和完整性
     */
    private String publicKey;

    /**
     * 服务器异步通知页面路径
     * 需http://格式的完整路径
     * 不能加?id=123这类自定义参数
     * 用于接收支付宝的异步通知
     */
    private String notifyUrl;

    /**
     * 页面跳转同步通知页面路径
     * 需http://格式的完整路径
     * 不能加?id=123这类自定义参数
     * 用于支付完成后的页面跳转
     */
    private String returnUrl;

    /**
     * 签名方式
     * 目前支持RSA2和RSA
     * 推荐使用RSA2
     */
    private String signType;

    /**
     * 字符编码格式
     * 支持utf-8和gbk
     * 推荐使用utf-8
     */
    private String charset;

    /**
     * 支付宝网关
     * 用于指定支付宝API的访问地址
     * 正式环境和沙箱环境使用不同的地址
     */
    private String gatewayUrl;

    /**
     * 日志路径
     * 用于配置支付宝SDK的日志输出位置
     */
    private String logPath;
}